home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 551-575 / disk_556 / scheme2c / scheme-doc.lzh / doc / index.mss next >
Text File  |  1991-10-11  |  69KB  |  1,728 lines

  1. @Define(Index=Text, Columns 2, ColumnMargin .25 in, Boxed, Fill, Indent 0,
  2.         Spacing 1)
  3.  
  4. @Style(FontFamily <TimesRoman>, Singlesided)
  5.  
  6. @Begin(Heading)
  7. Scheme->C Index to the
  8. Revised@+(3) Report on the Algorithmic Language Scheme
  9. 28 September 1990
  10. @End(Heading)
  11.  
  12. @Begin(Index)
  13.  
  14. @b(Implementation Notes)
  15.  
  16. @t(Scheme->C) is an implementation of the language Scheme as
  17. described in the @i[Revised@+(3) Report on the Algorithmic Language
  18. Scheme] (@i[SIGPLAN Notices], V21, #12, December 1986).
  19.  
  20. The implementation is known to not conform to the required portions of
  21. the report in the following ways:
  22.  
  23. @begin(itemize)
  24. The syntax for numbers reflects the underlying C implementation.
  25. Scheme programs may not use the numeric prefixes @t(#i)
  26. and @t(#e), and numbers may not contain @t(#) as a digit.
  27.  
  28. The control flow of compiled programs is constrained by the
  29. underlying C implementation.  As a result, some tail calls are not compiled as
  30. tail calls.
  31. @end(itemize)
  32.  
  33. The implementation has been extended beyond the report in the
  34. following ways:
  35.  
  36. @begin(itemize)
  37. With the previously noted exceptions, the implementation conforms to the
  38. required portions of @i[Revised@+(3.95), 11 March 1989].
  39.  
  40. @begin(verbatim)
  41. @r(Additional procedures:)
  42. @t(
  43. after-collect
  44. bit-and        bit-lsh
  45. bit-not        bit-or
  46. bit-rsh        bit-xor
  47. bpt       
  48. c-byte-ref     c-byte-set!
  49. c-double-ref   c-double-set!
  50. c-float-ref    c-float-set!
  51. c-int-ref      c-int-set!
  52. c-shortint-ref  
  53. c-shortint-set!
  54. c-shortunsigned-ref
  55. c-shortunsigned-set!
  56. c-string->string
  57. c-tscp-ref     c-tscp-set!
  58. c-unsigned-ref
  59. c-unsigned-set!
  60. collect           collect-all        
  61. collect-rusage cons*
  62. define-system-file-task
  63. echo
  64. enable-sytem-file-tasks
  65. error           eval
  66. exit
  67. expand         expand-once
  68. fixed->float   fixed?
  69. float->fixed   float?
  70. flush-buffer   format
  71. get-output-string
  72. getprop
  73. implementation-information
  74. my-rusage
  75. open-file      
  76. open-input-string
  77. open-output-string
  78. peek-char      
  79. port->stdio-file
  80. pp             proceed
  81. putprop
  82. read-eval-print
  83. remove         remove!
  84. remq           remq!
  85. remv           remv! 
  86. reset
  87. save-heap
  88. scheme-byte-ref
  89. scheme-byte-set!
  90. scheme-int-ref
  91. scheme-int-set!
  92. scheme-tscp-ref
  93. scheme-tscp-set!
  94. set-top-level-value!
  95. set-write-width!
  96. signal
  97. string->uninterned-symbol
  98. top-level      
  99. top-level-value
  100. trace          unbpt
  101. uninterned-symbol?
  102. untrace
  103. when-unreferenced
  104. write-count    write-width
  105. )
  106. @end(verbatim)
  107.  
  108. @begin(verbatim)
  109. @r(Additional syntax:)
  110. @t(
  111. define-c-external
  112. define-constant
  113. define-external
  114. define-in-line
  115. define-macro   include
  116. module
  117. unless         when
  118. )
  119. @end(verbatim)
  120.  
  121. @begin(verbatim)
  122. @r(Additional variables:)
  123. @t(
  124. *args*         
  125. *error-handler*
  126. *obarray*      *result*
  127. stderr-port    stdin-port
  128. stdout-port
  129. )
  130. @end(verbatim)
  131.  
  132. @end(itemize)
  133.  
  134. @b(Index)
  135.  
  136. @t(") delimits strings.  A @t(") is represented inside a string
  137. constant by @t(\").  Revised@+(3) 24.
  138.  
  139. @t(#() denotes the start of a vector.  Revised@+(3) 25.
  140.  
  141. @t(#\)@i(character) written notation for characters.  Revised@+(3) 23.
  142.  
  143. @t(#\formfeed) ASCII form feed character (#o14).  Revised@+(3) 23.
  144.  
  145. @t(#\linefeed) ASCII line feed character (#o12).  Revised@+(3) 23.
  146.  
  147. @t(#\newline) new line character (#o12).  Revised@+(3) 23.
  148.  
  149. @t(#\return) ASCII carriage return character (#o15).  Revised@+(3) 23.
  150.  
  151. @t(#\space) ASCII space character (#o40).  Revised@+(3) 23.
  152.  
  153. @t(#\tab) ASCII tab character (#o11).  Revised@+(3) 23.
  154.  
  155. @t(#b) binary radix  prefix.  Revised@+(3) 19.
  156.  
  157. @t(#d) decimal radix prefix.  Revised@+(3) 19.
  158.  
  159. @t(#f) boolean constant for false.  Note that while the empty list
  160. @t[()] is also treated as a false value in conditional expressions,
  161. it is not the same as @t(#f).  Revised@+(3) 12.
  162.  
  163. @t(#o) octal radix prefix.  Revised@+(3) 19.
  164.  
  165. @t(#t) boolean constant for true.  Revised@+(3) 12.
  166.  
  167. @t(#x) hex radix prefix.  Revised@+(3) 19.
  168.  
  169. @t(')@i(expression) abbreviation for (@t(quote) @i(expression)).  Revised@+(3)
  170. 7, 15.
  171.  
  172. (@t(*) @i(number) ...) returns the product of its arguments.
  173. Revised@+(3) 19.
  174.  
  175. @t(*args*) arguments of the @i(procedure) when a breakpoint has been
  176. hit.  The value of this symbol will be used as the arguments when the
  177. user continues from the breakpoint.  See @t(bpt), @t(proceed).
  178.  
  179. @t[*error-handler*] the error handling @i(procedure).  See @t(error).
  180.  
  181. @t(*obarray*) is a vector of lists of symbols.  It is used by
  182. @t(read) to assure that symbols written and then read back in are
  183. @t(eqv?).  See @i(interned), Revised@+(3) 17.
  184.  
  185. @t(*result*) result of the @i(procedure) when a breakpoint has been
  186. hit.  The value of this symbol be returned as the value of the
  187. @i(procedure) after the user continues from the breakpoint.  See
  188. @t(bpt), @t(proceed).
  189.  
  190. @t(\)@i(ASCII-character) tells @t(read) to treat the
  191. @i(ASCII-character) as a letter when reading a symbol.  If the
  192. character is a lower-case alphabetic character, it will not be
  193. upshifted.  Revised@+(3) 17.
  194.  
  195. @t(\") represents a @t(") inside a string constant.  Revised@+(3) 24.
  196.  
  197. @t(`)@i(back-quote-template) abbreviation for (@t(quasiquote)
  198. @i(back-quote template)). Revised@+(3) 11.
  199.  
  200. @t[(] used to group and notate lists.  Revised@+(3) 5.
  201.  
  202. @t[()] the empty list.  Revised@+(3) 14.
  203.  
  204. @t[)] used to group and notate lists.  Revised@+(3) 5.
  205.  
  206. (@t(+) @i(number) ...) returns the sum of its arguments.
  207. Revised@+(3) 19.
  208.  
  209. @t(,)@i(expression) abbreviation for (@t(unquote) @i(expression))
  210. that causes the expression to be replaced by its value in the
  211. @i(back-quote-template).  Revised@+(3) 11.
  212.  
  213. @t(,@@)@i(expression) abbreviation for (@t(unquote-splicing)
  214. @i(expression)) that causes the expression to be evaluated and
  215. "spliced" into the @i(back-quote-template). Revised@+(3) 11.
  216.  
  217. (@t(-) @i(number) @i(number) ...) with two or more arguments, this
  218. returns the difference of its arguments, associating to the left.
  219. With one argument it returns the additive inverse of the argument.
  220. Revised@+(3) 20.
  221.  
  222. @t[-C] command line flag to @t(scc) that will cause the compiler to
  223. compile the Scheme files @i(source)@t(.sc) to C source in @i(source)@t(.c).
  224. No further processing is performed.
  225.  
  226. @t[-I] @i(directory) command line flag to supply a directory to be searched
  227. by @t(include) when it is looking for a source file.  When
  228. multiple flags are supplied, the directories are searched in
  229. the order that the flags are specified.
  230.  
  231. @t[-Ob] command line flag to @t(scc) that controls bounds checking.
  232. When it is supplied to the compiler, no bounds checking code for
  233. @i(vector) or @i(string) accesses will be generated.  Supplying this
  234. flag is equivalent to supplying the flags @t(-f '*bounds-check*'
  235. '#f').
  236.  
  237. @t[-Og] command line flag to @t(scc) that controls the generation of
  238. stack-trace debugging code. When it is supplied to the compiler,
  239. stack-trace code will not be generated.
  240.  
  241. @t[-On] command line flag to @t(scc) that controls number
  242. representation. When it is supplied to the compiler, all numbers will
  243. be assumed to be @i(fixed) integers.  Supplying this flag is
  244. equivalent to supplying the flags @t(-f '*fixed-only*' '#t').
  245.  
  246. @t[-Ot] command line flag to @t(scc) that controls type error
  247. checking. When it is supplied, no error checking code will be
  248. generated. Supplying this flag is equivalent to supplying the flags
  249. @t(-f '*type-check*' '#f').
  250.  
  251. @t[-e] command line flag to @t(sci).  When it is supplied, all text
  252. read on the standard input file will be echoed on the standard output
  253. file.
  254.  
  255. @t[-emacs] command line flag to @t(sci).  When supplied, the
  256. interpreter assumes that it is being run by GNU emacs.
  257.  
  258. @t[-i] command line flag to @t(scc) that will combine the source and
  259. object files into a Scheme interpreter.  Module names for files other
  260. than Scheme source files must be supplied using the @t[-m] command
  261. line flag.
  262.  
  263. @t[-m] @i(module) command line flag to @t(scc) to specify the name of
  264. a module that must be initialized by calling the procedure
  265. @i(module__init).  Note that the Scheme compiler will downshift the
  266. alphabetic characters in module names supplied in the @t(module)
  267. directive.
  268.  
  269. @t[-nh] command line flag to @t(sci).  When it is supplied, the
  270. interpreter version header will not be printed on the standard output
  271. file.
  272.  
  273. @t[-np] command line flag to @t(sci).  When it is supplied, prompts
  274. for input from standard input will not be printed on standard output.
  275.  
  276. @t[-q] command line flag to @t(sci).  When it is supplied, the result
  277. of each expression evaluation will not be printed on standard output.
  278.  
  279. @t[-pg] command line flag to @t(scc) that will cause it to produce
  280. profiled code for run-time measurement using @i(gprof).  The profiled
  281. library will be used in lieu of the standard Scheme library.
  282.  
  283. @t[-scgc] @i(flag) command line flag to any Scheme program that
  284. controls the reporting of garbage collection statistics.  If @i(flag)
  285. is set to 1, then garbage collection statistics will be printed on
  286. stderr.  This flag will override @t[SCGCINFO].
  287.  
  288. @t[-sch] @i(integer) command line flag to any Scheme program to set
  289. the heap size in megabytes.  If it is not supplied, and the
  290. @t[SCHEAP] environment variable was not set, and the program did not
  291. have a default, then a 4MB heap will be used.  This flag will
  292. override @t[SCHEAP].
  293.  
  294. @t[-schf] @i(filename) command line flag to any Scheme program to
  295. initialize the heap by loading it from the file @i(filename).  The
  296. minimum heap size used will be that of the Scheme program that saved
  297. the image.  This flag will override @t[SCHEAPFILE].  Note that a heap
  298. image may only be loaded by the same program that saved it.
  299.  
  300. @t[-scl] @i(integer) command line flag to any Scheme program to set
  301. the full collection limit.  When more than this percent of the heap
  302. is allocated following a generational garbage collection, then a full
  303. garbage collection will be done.  The default value is 33.  This flag
  304. will override @t[SCLIMIT].
  305.  
  306. @t[-scm] @i(symbol) command line flag to any Scheme program to cause
  307. execution to start at the procedure that is the value of @i(symbol),
  308. rather than at the main program.  Note that the Scheme @t(read)
  309. procedure typically upshifts alphabetic characters.  Thus, to start
  310. execution in the Scheme interpreter, one would enter @t[-scm
  311. READ-EVAL-PRINT] on the command line.
  312.  
  313. @t(.) denotes a dotted-pair: (@i(obj) @t(.) @i(obj)).  Revised@+(3) 14.
  314.  
  315. @t(.sc) file name extension for @t[Scheme->C] source files.
  316.  
  317. (@t(/) @i(number) ...) with two or more arguments, this returns the
  318. quotient of its arguments, associating to the left.  With one
  319. argument it returns the multiplicative inverse of the argument.
  320. Revised@+(3) 20.
  321.  
  322. @t(;) indicates the start of a comment.  The comment continues until
  323. the end of the line.  Revised@+(3) 5.
  324.  
  325. (@t(<) @i(number) @i(number) @i(number) ...) @i(predicate) that returns
  326. @t(#t) when the arguments are monotonically increasing.
  327. Revised@+(3) 19.
  328.  
  329. (@t(<=) @i(number) @i(number) @i(number) ...) @i(predicate) that returns
  330. @t(#t) when the arguments are monotonically nondecreasing.  Revised@+(3) 19.
  331.  
  332. (@t(=) @i(number) @i(number) @i(number) ...) @i(predicate) that returns
  333. @t(#t) when the arguments are equal.
  334. Revised@+(3) 19.
  335.  
  336. @t(=>) used in a @t(cond) conditional clause.  Revised@+(3) 8.
  337.  
  338. (@t(>) @i(number) @i(number) @i(number) ...) @i(predicate) that returns
  339. @t(#t) when the arguments are monotonically decreasing.  Revised@+(3) 19.
  340.  
  341. (@t(>=) @i(number) @i(number) @i(number) ...) @i(predicate) that returns
  342. @t(#t) when the arguments are monotonically nonincreasing. Revised@+(3) 19.
  343.  
  344. (@t(abs) @i(number)) returns the magnitude of its argument.  Revised@+(3) 20.
  345.  
  346. (@t(acos) @i(number)) returns the arccosine of its argument.
  347. Revised@+(3) 20.
  348.  
  349. @t(after-collect) is a variable in the top level environment.
  350. Following each garbage collection, if its value is not @t(#f),
  351. then it is assumed to be a procedure and is called with three
  352. arguments:  the heap size in bytes, the currently allocated
  353. storage in bytes, and the allocation percentage that will
  354. cause a full garbage collection.  The value returned by the
  355. procedure is ignored.
  356.  
  357. @i(alist) a list of @i(pairs).  Revised@+(3) 16.
  358.  
  359. (@t(and) @i(expression) ...) @i(syntax) for a conditional expression.
  360. Revised@+(3) 9.
  361.  
  362. (@t(append) @i(list) ...) returns a list consisting of the
  363. elements of the first @i(list) followed by the elements of the other
  364. @i(lists).  Revised@+(3) 16.
  365.  
  366. (@t(apply) @i(procedure) @i(arg-list)) calls the @i(procedure) with the
  367. elements of @i(arg-list) as the actual arguments.  Revised@+(3) 26.
  368.  
  369. (@t(apply) @i(procedure) @i(obj) ... @i(arg-list)) calls the
  370. @i(procedure) with the list (@t(append) (@t(list) @i(obj) ...)
  371. @i(arg-list)) as the actual arguments.  Revised@+(3) 26.
  372.  
  373. (@t(asin) @i(number)) returns the arcsine of its argument.
  374. Revised@+(3) 20.
  375.  
  376. (@t(assoc) @i(obj) @i(alist)) finds the first @i(pair) in @i(alist) whose
  377. @t(car) field is @t(equal?) to @i(obj).  If no such @i(pair) exists, then
  378. @t(#f) is returned.  Revised@+(3) 16.
  379.  
  380. (@t(assq) @i(obj) @i(alist)) finds the first @i(pair) in @i(alist) whose
  381. @t(car) field is @t(eq?) to @i(obj).  If no such @i(pair) exists, then
  382. @t(#f) is returned.  Revised@+(3) 16.
  383.  
  384. (@t(assv) @i(obj) @i(alist)) finds the first @i(pair) in @i(alist) whose
  385. @t(car) field is @t(eqv?) to @i(obj).  If no such @i(pair) exists, then
  386. @t(#f) is returned.  Revised@+(3) 16.
  387.  
  388. (@t(atan) @i(number)) returns the arctangent of its argument.
  389. Revised@+(3) 20.
  390.  
  391. (@t(atan) @i(number) @i(number)) returns the arctangent of its arguments.
  392. Revised@+(3) 20.
  393.  
  394. @i(back-quote-template) list or vector structure that may contain
  395. @t(,)@i(expression) and @t(,@@)@i(expression) forms.  Revised@+(3) 11.
  396.  
  397. (@t(begin) @i(expression) ...) @i(syntax) where @i(expression)'s are
  398. evaluated left to right and the value of the last @i(expression) is
  399. returned. Revised@+(3) 10.
  400.  
  401. @i(bindings) a @i(list) whose elements are of the form: (@i(symbol)
  402. @i(expression)), where the @i(expression) is the initial value to
  403. place in the location bound to the @i(symbol). Revised@+(3) 9.
  404.  
  405. (@t[bit-and] @i(number) ...) returns an unsigned
  406. number representing the bitwise and of its 32-bit arguments.
  407.  
  408. (@t[bit-lsh] @i(number) @i(integer)) returns an unsigned
  409. number representing the 32-bit value @i(number) shifted left
  410. @i(integer) bits.
  411.  
  412. (@t[bit-not] @i(number) ...) returns an unsigned number
  413. representing the bitwise not of its 32-bit argument.
  414.  
  415. (@t[bit-or] @i(number) ...) returns an unsigned number representing
  416. the bitwise inclusive or of its 32-bit arguments.
  417.  
  418. (@t[bit-rsh] @i(number) @i(integer)) returns an unsigned
  419. number representing the 32-bit value @i(number) shifted right
  420. @i(integer) bits.
  421.  
  422. (@t[bit-xor] @i(number) ...) returns an unsigned number representing
  423. the bitwise exclusive or of its 32-bit arguments.
  424.  
  425. @i(body) one or more @i(expressions) that are be executed in
  426. sequence. Revised@+(3) 9.
  427.  
  428. (@t(boolean?) @i(expression)) @i(predicate) that returns
  429. @t(#t) if @i(expression) is @t(#t) or @t(#f).  Revised@+(3) 12.
  430.  
  431. (@t(bpt)) @i(syntax) to return a list of the procedures that have
  432. been breakpointed.
  433.  
  434. (@t(bpt) @i(symbol)) @i(syntax) to set a breakpoint on the
  435. @i(procedure) that is the value of @i(symbol).  Each entry and exit
  436. of the @i(procedure) will provide the user with an opportunity to
  437. examine and alter the current state of the computation.  The
  438. computation is continued by entering control-D.  The computation may
  439. be terminated and a return made to the top level of the interpreter
  440. by entering @t{(top-level)}. See @t(*args*), @t(*result*),
  441. @t(top-level), @t(unbpt).
  442.  
  443. (@t(bpt) @i(symbol) @i(procedure)) @i(syntax) to set a conditional
  444. breakpoint on the @i(procedure) that is the value of @i(symbol).  A
  445. breakpoint occurs when (@t(apply) @i(procedure) @i(arguments))
  446. returns a true value.
  447.  
  448. (@t(c-byte-ref) @i(c-pointer) @i(integer)) returns the byte at the
  449. @i(integer) byte of @i(c-pointer) as a @i(number).
  450.  
  451. (@t(c-byte-set!) @i(c-pointer) @i(integer) @i(number)) sets the byte
  452. at the @i(integer) byte of @i(c-pointer) to @i(number) and returns
  453. @i(number) as its value.
  454.  
  455. (@t(c-double-ref) @i(c-pointer) @i(integer)) returns the double at
  456. the @i(integer) byte of @i(c-pointer) as a @i(number).
  457.  
  458. (@t(c-double-set!) @i(c-pointer) @i(integer) @i(number)) sets the
  459. double at the @i(integer) byte of @i(c-pointer) to @i(number) and
  460. returns @i(number) as its value.
  461.  
  462. (@t(c-float-ref) @i(c-pointer) @i(integer)) returns the float at
  463. the @i(integer) byte of @i(c-pointer) as a @i(number).
  464.  
  465. (@t(c-float-set!) @i(c-pointer) @i(integer) @i(number)) sets the
  466. float at the @i(integer) byte of @i(c-pointer) to @i(number) and
  467. returns @i(number) as its value.
  468.  
  469. (@t(c-int-ref) @i(c-pointer) @i(integer)) returns the int at the
  470. @i(integer) byte of @i(c-pointer) as a @i(number).
  471.  
  472. (@t(c-int-set!) @i(c-pointer) @i(integer) @i(number)) sets the
  473. int at the @i(integer) byte of @i(c-pointer) to @i(number) and
  474. returns @i(number) as its value.
  475.  
  476. @i(c-pointer) a @i(number) that is the address of a structure
  477. outside the Scheme heap, or a @i(string) that is a C-structure within
  478. the Scheme heap.
  479.  
  480. (@t(c-shortint-ref) @i(c-pointer) @i(integer)) returns the short int
  481. at the @i(integer) byte of @i(c-pointer) as a @i(number).
  482.  
  483. (@t(c-shortint-set!) @i(c-pointer) @i(integer) @i(number)) sets the
  484. short int at the @i(integer) byte of @i(c-pointer) to @i(number) and
  485. returns @i(number) as its value.
  486.  
  487. (@t(c-shortunsigned-ref) @i(c-pointer) @i(integer)) returns the short
  488. unsigned at the @i(integer) byte of @i(c-pointer) as a @i(number).
  489.  
  490. (@t(c-shortunsigned-set!) @i(c-pointer) @i(integer) @i(number)) sets
  491. the short unsigned at the @i(integer) byte of @i(c-pointer) to
  492. @i(number) and returns @i(number) as its value.
  493.  
  494. (@t(c-string->string) @i(c-pointer)) returns a Scheme @i(string) that
  495. is a copy of the null-terminated string @i(c-pointer).
  496.  
  497. (@t(c-tscp-ref) @i(c-pointer) @i(integer)) returns the tagged Scheme
  498. to C pointer at the @i(integer) byte of @i(c-pointer).
  499.  
  500. (@t(c-tscp-set!) @i(c-pointer) @i(integer) @i(expression)) sets the
  501. tagged @t[Scheme->C] pointer at the @i(integer) byte of @i(c-pointer)
  502. to @i(expression) and returns @i(expression) as its value.
  503.  
  504. (@t(c-unsigned-ref) @i(c-pointer) @i(integer)) returns the unsigned
  505. at the @i(integer) byte of @i(c-pointer) as a @i(number).
  506.  
  507. (@t(c-unsigned-set!) @i(c-pointer) @i(integer) @i(number)) sets the
  508. unsigned at the @i(integer) byte of @i(c-pointer) to @i(number) and
  509. returns @i(number) as its value.
  510.  
  511. @i(c-type) @i(syntax) for declaring the type of a non-Scheme
  512. procedure, procedure argument, or global.  The allowed types are:
  513. @t(pointer), @t(char), @t(int), @t(shortint), @t(longint),
  514. @t(unsigned), @t(shortunsigned), @t(longunsigned), @t(float),
  515. @t(double), @t(tscp), or @t(void).
  516.  
  517. (@t(car) @i(pair)) returns the contents of the @t(car) field of the
  518. @i(pair).  Revised@+(3) 15.
  519.  
  520. (@t(caar) @i(pair)) returns (@t(car) (@t(car) @i(pair))).
  521. Revised@+(3) 15.
  522.  
  523. (@t(ca...r) @i(pair)) compositions of @t(car) and @t(cdr).
  524. Revised@+(3) 15.
  525.  
  526. (@t(call-with-current-continuation) @i(procedure)) calls @i(procedure)
  527. with the current continuation as its argument.  Revised@+(3) 27.
  528.  
  529. (@t(call-with-input-file) @i(string) @i(procedure)) calls @i(procedure)
  530. with the @i(port) that is the result of opening the file @i(string)
  531. for input.  Revised@+(3) 28.
  532.  
  533. (@t(call-with-output-file) @i(string) @i(procedure)) calls @i(procedure)
  534. with the @i(port) that is the result of opening the file @i(string)
  535. for output.  Revised@+(3) 28.
  536.  
  537. (@t(case) @i(key) @i(clause) @i(clause) ...) @i(syntax) for a
  538. conditional expression where @i(key) is any expression, and each
  539. @i(clause) is of the form ((@i(datum) ...) @i(expression)
  540. @i(expression) ...).  The last clause may be an "else clause" of the
  541. form (@t(else)  @i(expression) @i(expression) ...).  Revised@+(3) 8.
  542.  
  543. (@t(cdr) @i(pair)) returns the contents of the @t(cdr) field of the
  544. @i(pair).  Revised@+(3) 15.
  545.  
  546. (@t(cd...r) @i(pair)) compositions of @t(car) and @t(cdr).
  547. Revised@+(3) 15.
  548.  
  549. (@t(cddddr) @i(pair)) returns (@t(cdr) (@t(cdr) (@t(cdr) (@t(cdr) @i(pair))))).
  550. Revised@+(3) 15.
  551.  
  552. (@t(ceiling) @i(number)) returns the smallest integer that is not
  553. smaller than its arguments.  Revised@+(3) 20.
  554.  
  555. @t(char) @i(syntax) for declaring a non-Scheme procedure, procedure
  556. argument, or global variable as the C type @t[char].  When a @t[char]
  557. value must be supplied, an expression of type @i(character) must be
  558. supplied.  When a @t[char] value is returned, a value of type
  559. @i(character) will be returned.
  560.  
  561. (@t(char->integer) @i(character)) returns an @i(integer) whose value
  562. is the ASCII character code of @i(character).  Revised@+(3) 24.
  563.  
  564. (@t(char-alphabetic?) @i(character)) @i(predicate) that
  565. returns @t(#t) when @i(character) is alphabetic.  Revised@+(3) 23.
  566.  
  567. (@t(char-ci<=?) @i(character) @i(character)) @i(predicate) that
  568. returns @t(#t) when the first @i(character) is less than or equal to
  569. the second @i(character).  Upper case and lower case letters are
  570. treated as though they were the same character.  Revised@+(3) 23.
  571.  
  572. (@t(char-ci<?) @i(character) @i(character)) @i(predicate) that
  573. returns @t(#t) when the first @i(character) is less than the second
  574. @i(character).  Upper case and lower case letters are treated
  575. as though they were the same character. Revised@+(3) 23.
  576.  
  577. (@t(char-ci=?) @i(character) @i(character)) @i(predicate) that
  578. returns @t(#t) when the first @i(character) is equal to the
  579. second @i(character). Upper case and lower case letters are
  580. treated as though they were the same character.  Revised@+(3) 23.
  581.  
  582. (@t(char-ci>=?) @i(character) @i(character)) @i(predicate) that
  583. returns @t(#t) when the first @i(character) is greater than or equal
  584. to the second @i(character). Upper case and lower case letters are
  585. treated as though they were the same character. Revised@+(3) 23.
  586.  
  587. (@t(char-ci>?) @i(character) @i(character)) @i(predicate) that
  588. returns @t(#t) when the first @i(character) is greater than the
  589. second @i(character). Upper case and lower case letters are treated
  590. as though they were the same character. Revised@+(3) 23.
  591.  
  592. (@t(char-downcase) @i(character)) returns the lower case value of
  593. @i(character).  Revised@+(3) 24.
  594.  
  595. (@t(char-lower-case?) @i(letter)) @i(predicate) that returns
  596. @t(#t) when @i(letter) is lower-case.  Revised@+(3) 24.
  597.  
  598. (@t(char-numeric?) @i(character)) @i(predicate) that returns
  599. @t(#t) when @i(character) is numeric.  Revised@+(3) 23.
  600.  
  601. (@t(char-ready?) @i(optional-input-port)) @i(predicate) that returns
  602. @t(#t) when a character is ready on the @i(optional-input-port).
  603. Revised@+(3) 29.
  604.  
  605. (@t(char-upcase) @i(character)) returns the upper case value of the
  606. @i(character).  Revised@+(3) 24.
  607.  
  608. (@t(char-upper-case?) @i(letter)) @i(predicate) that returns
  609. @t(#t) when @i(letter) is upper-case.  Revised@+(3) 24.
  610.  
  611. (@t(char-whitespace?) @i(character)) @i(predicate) that
  612. returns @t(#t) when @i(character) is a whitespace character.
  613. Revised@+(3) 23.
  614.  
  615. (@t(char<=?) @i(character) @i(character)) @i(predicate) that
  616. returns @t(#t) when the first @i(character) is less than or equal to
  617. the second @i(character).  Revised@+(3) 23.
  618.  
  619. (@t(char<?) @i(character) @i(character)) @i(predicate) that
  620. returns @t(#t) when the first @i(character) is less than the second
  621. @i(character).  Revised@+(3) 23.
  622.  
  623. (@t(char=?) @i(character) @i(character)) @i(predicate) that
  624. returns @t(#t) when the first @i(character) is equal to the second
  625. @i(character).  Revised@+(3) 23.
  626.  
  627. (@t(char>=?) @i(character) @i(character)) @i(predicate) that
  628. returns @t(#t) when the first @i(character) is greater than or equal
  629. to the second @i(character).  Revised@+(3) 23.
  630.  
  631. (@t(char>?) @i(character) @i(character)) @i(predicate) that
  632. returns @t(#t) when the first @i(character) is greater than the
  633. second @i(character).  Revised@+(3) 23.
  634.  
  635. (@t[char?] @i(expression)) @i(predicate) that returns @t(#t)
  636. when @i(expression) is a @i(character).  Revised@+(3) 23.
  637.  
  638. @i(character) Scheme object that represents printed characters.  See
  639. @t(#\)@i(character), @t(#\)@i(character-name), Revised@+(3) 23.
  640.  
  641. (@t(close-input-port) @i(input-port)) closes the file associated with
  642. @i(input-port). Revised@+(3) 29.
  643.  
  644. (@t(close-output-port) @i(output-port)) closes the file associated
  645. with @i(output-port).  Revised@+(3) 29.
  646.  
  647. (@t(close-port) @i(port)) closes the file associated with @i(port).
  648. Revised@+(3) 29.
  649.  
  650. (@t(collect)) invokes the garbage collector to perform a generational
  651. collection.  Normally, garbage collection is invoked automatically by
  652. the Scheme system.
  653.  
  654. (@t(collect-all)) invokes the garbage collector to perform a
  655. full collection.  Normally, garbage collection is invoked
  656. automatically by the Scheme system.
  657.  
  658. (@t(collect-rusage)) returns a @i(vector) containing information
  659. about resources consumed by the garbage collector.  The information
  660. is that contained in the @i(rusage) structure.  See @i(Ultrix-32
  661. Programmer's Manual), 2-62.
  662.  
  663. @i(complex number) complex numbers are not supported in @t[Scheme->C].
  664. Revised@+(3) 18.
  665.  
  666. (@t(complex?) @i(expression)) @i(predicate) that returns @t(#t) when
  667. @i(expression) is a @i(complex number).  All @t[Scheme->C] @i(numbers)
  668. are complex. Revised@+(3) 19.
  669.  
  670. (@t(cond) @i(clause) @i(clause) ...) @i(syntax) for a conditional
  671. expression where each @i(clause) is of the form (@i(test)
  672. @i(expression) ...) or (@i(test) @t(=>) @i(procedure)).  The last
  673. @i(clause) may be of the form (@t(else) @i(expression) @i(expression)
  674.  ...).  Revised@+(3) 8.
  675.  
  676. (@t(cons) @i(expression)@-(1) @i(expression)@-(2)) returns a newly
  677. allocated @i(pair) that has @i(expression)@-(1) as its @t(car), and
  678. @i(expression)@-(2) as its @i(cdr). Revised@+(3) 15.
  679.  
  680. (@t(cons*) @i(expression) @i(expression) ...) returns an object
  681. formed by consing the @i(expressions) together from right to left. If
  682. only one @i(expression) is supplied, then that @i(expression) is
  683. returned.
  684.  
  685. (@t(cos) @i(number)) returns the cosine of its argument.  Revised@+(3)
  686. 20.
  687.  
  688. (@t(current-input-port)) returns the current default input @i(port).
  689. Revised@+(3) 28.
  690.  
  691. (@t(current-output-port)) returns the current default output @i(port).
  692. Revised@+(3) 28.
  693.  
  694. (@t(define) @i(symbol) @i(expression)) @i(syntax) that
  695. defines the value of @i(expression) as the value of either a
  696. top-level symbol or a local variable.  Revised@+(3) 11.
  697.  
  698. (@t(define) (@i(symbol) @i(formals)) @i(body)) @i(syntax)
  699. that defines a @i(procedure) that is either the value of a
  700. top-level symbol or a local variable. Revised@+(3) 11.
  701.  
  702. (@t(define) (@i(symbol) @t(.) @i(formal)) @i(body)) @i(syntax) that
  703. defines a @i(procedure) that is either the value of a top-level symbol
  704. or a local variable. Revised@+(3) 11.
  705.  
  706. (@t(define-c-external) @i(symbol) @i(c-type) @i(string)) @i(syntax)
  707. for a compiler declaration that defines @i(symbol) as a non-Scheme
  708. global variable with the name @i(string) and the type @i(c-type).
  709.  
  710. (@t(define-c-external) (@i(symbol) @i(c-type)@-(1)...)
  711. @i(c-type)@-(2) @i(string)) @i(syntax) for a compiler declaration
  712. that defines @i(symbol) as a non-Scheme procedure with arguments of
  713. the type specified in the list @i(c-type)@-(1).  The procedure's name
  714. is @i(string) and it returns a value of type @i(c-type)@-(2).
  715.  
  716. (@t(define-c-external) (@i(symbol) @i(c-type)@-(1)... .
  717. @i(c-type)@-(2)) @i(c-type)@-(3) @i(string)) @i(syntax) for a
  718. compiler declaration that defines @i(symbol) as a non-Scheme
  719. procedure that takes a variable number of arguments.  The types of
  720. the initial arguments are specified by the  list @i(c-type)@-(1).
  721. Any additional arguments must be of the type @i(c-type)@-(2).  The
  722. procedure's name is @i(string) and it returns a value of type
  723. @i(c-type)@-(3).
  724.  
  725. (@t(define-constant) @i(symbol) @i(expression)) @i(syntax) that
  726. defines a macro that replaces all occurences of @i(symbol) with the
  727. value of @i(expression), evaluated at the time of the definition.
  728.  
  729. (@t(define-external) @i(symbol)@-(1) @i(symbol)@-(2)) @i(syntax) for
  730. a compiler declaration that @i(symbol)@-(1) is defined in @i(module)
  731. @i(symbol)@-(2).
  732.  
  733. (@t(define-external) @i(symbol) @t(TOP-LEVEL)) @i(syntax) for a
  734. compiler declaration that @i(symbol) is a top-level symbol.  Its
  735. value is to be found via the @t(*obarray*).
  736.  
  737. (@t(define-external) @i(symbol) @t("") @i(string)) @i(syntax) for a
  738. compiler declaration that @i(symbol) has the external name
  739. @i(string).
  740.  
  741. (@t(define-external) @i(symbol) @i(string)@-(1) @i(string)@-(2))
  742. @i(syntax) for a compiler declaration that @i(symbol) is in the
  743. @i(module) @i(string)@-(1) and has the external name
  744. @i(string)@-(1)_@i(string)@-(2).
  745.  
  746. (@t(define-external) (@i(symbol)@-(1) @i(formals)) @i(symbol)@-(2))
  747. @i(syntax) for a compiler declaration that @i(symbol)@-(1) is a
  748. Scheme @i(procedure) defined in @i(module) @i(symbol)@-(2).
  749.  
  750. (@t(define-external) (@i(symbol)@-(1) @t(.) @i(formal))
  751. @i(symbol)@-(2)) @i(syntax) for a compiler declaration that
  752. @i(symbol)@-(1) is a Scheme @i(procedure) defined in @i(module)
  753. @i(symbol)@-(2).
  754.  
  755. (@t(define-external) (@i(symbol) @i(formals)) @t("") @i(string))
  756. @i(syntax) for a compiler declaration that @i(symbol) is a
  757. @i(procedure) that has the external name @i(string).
  758.  
  759. (@t(define-external) (@i(symbol) @t(.) @i(formal)) @t("") @i(string))
  760. @i(syntax) for a compiler declaration that @i(symbol) is a
  761. @i(procedure) that takes a variable number of arguments and has the
  762. external name @i(string).
  763.  
  764. (@t(define-external) (@i(symbol) @i(formals)) @i(string)@-(1)
  765. @i(string)@-(2)) @i(syntax) for a compiler declaration that
  766. @i(symbol) is a @i(procedure) in the @i(module) @i(string)@-(1) that
  767. has the external name @i(string)@-(1)_@i(string)@-(2).
  768.  
  769. (@t(define-external) (@i(symbol) @t(.) @i(formal)) @i(string)@-(1)
  770. @i(string)@-(2)) @i(syntax) for a compiler declaration that
  771. @i(symbol) is a @i(procedure) in the @i(module) @i(string)@-(1) that
  772. has the external name @i(string)@-(1)_@i(string)@-(2).
  773.  
  774. (@t(define-in-line) (@i(symbol) @i(formals)) @i(body)) @i(syntax)
  775. that defines a @i(procedure) that is to be compiled "in-line".
  776.  
  777. (@t(define-in-line) (@i(symbol) @t(.) @i(formal)) @i(body))
  778. @i(syntax) that defines a @i(procedure) that is to be compiled
  779. "in-line".
  780.  
  781. (@t(define-macro) @i(symbol) (@t(lambda) (@i(form expander))
  782. @i(expression) ...)) @i(syntax) that defines a macro expansion
  783. procedure.  Macro expansion is done using the ideas expressed in
  784. @i(Expansion-Passing Style: Beyond Conventional Macros), 1986 ACM
  785. Conference on Lisp and Functional Programming, 143-150.
  786.  
  787. (@t(define-system-file-task) @i(file) @i(idle-task)
  788. @i(file-task)) installs the @i(idle-task) and @i(file-task)
  789. @i(procedures) for system file number @i(file).  When a Scheme
  790. program reads from a port and no characters are internally
  791. buffered, the @i(idle-task) for each system file is called.
  792. Then, the @i(file-task) for each system file that has input
  793. pending is called.  As long as no characters are available on
  794. the Scheme port, the Scheme system will idle, calling the
  795. @i(file-task) for each system file as input becomes available.
  796. A system file task is removed by supplying @t(#f) as the
  797. @i(idle-task) and @i(file-task).
  798.  
  799. (@t(delay) @i(expression)) @i(syntax) used together with the
  800. procedure @t(force) to implement call by need.  Revised@+(3) 10.
  801.  
  802. (@t(display) @i(expression) @i(optional-output-port)) writes a
  803. human-readable representation of @i(expression) to
  804. @i(optional-output-port).  Revised@+(3) 29.
  805.  
  806. (@t[do] (@i(var) ...) (@i(test) @i(expression) ...) @i(command) ...)
  807. @i(syntax) for an iteration construct.  Each @i(var) defines a local
  808. variable and is of the form (@i(symbol) @i(init) @i(step)) or
  809. (@i(symbol) @i(init)).  Revised@+(3) 10.
  810.  
  811. @t[double] @i(syntax) for declaring a non-Scheme procedure, procedure
  812. argument, or global variable as the C type @t[double]. When a
  813. @t[double] value must be supplied, an expression of type @i(number)
  814. must be supplied.  When a @t[double] value is returned, a value of
  815. type @i(number) is returned.
  816.  
  817. (@t(echo) @i(port)) turns off echoing on @i(port).
  818.  
  819. (@t(echo) @i(port) @i(output-port)) echos @i(port) on
  820. @i(output-port).  All characters read from or written to @i(port)
  821. are also written to @i(output-port).
  822.  
  823. @t(else) keyword in last @i(clause) of @t(cond) or @t(case) form.
  824.  
  825. @i(environment) the set of all variable bindings in effect at
  826. some point in the program.  Revised@+(3) 5.
  827.  
  828. (@t(eof-object?) @i(expression)) @i(predicate) that returns
  829. @t(#t) if @i(expression) is equal to the end of file object.
  830. Revised@+(3) 29.
  831.  
  832. (@t(enable-system-file-tasks) @i(flag)) enables (@i(flag) is
  833. @t(#t)) or disables (@i(flag) is @t(#f)) system file tasking
  834. and returns the previous system file tasking state.  When the
  835. value of flag is the symbol @t(wait), system file tasking is
  836. enabled and the Scheme program is blocked until there are no
  837. system file tasks.
  838.  
  839. (@t(eq?) @i(expression)@-(1) @i(expression)@-(2)) @i(predicate) that is
  840. the finest test for equivalence between @i(expression)@-(1) and
  841. @i(expression)@-(2).  Revised@+(3) 14.
  842.  
  843. (@t(equal?) @i(expression)@-(1) @i(expression)@-(2)) @i(predicate) that
  844. is the coarsest test for equivalence between @i(expression)@-(1) and
  845. @i(expression)@-(2).  Revised@+(3) 14.
  846.  
  847. (@t(eqv?) @i(expression)@-(1) @i(expression)@-(2)) @i(predicate) that is
  848. the medium test for equivalence between @i(expression)@-(1) and
  849. @i(expression)@-(2).  Revised@+(3) 13.
  850.  
  851. (@t[error] @i(symbol) @i(format-template) @i(expression) ...) reports
  852. an error.  The procedure name is @i(symbol) and the error message is
  853. produced by the @i(format-template) and optional @i(expressions).
  854. The @i(procedure) error is equivalent to @t[(lambda x (apply
  855. *error-handler* x))].  See @t(*error-handler*).
  856.  
  857. (@t[eval] @i(expression)) evaluates @i(expression).  Any macros in
  858. @i(expression) are expanded before evaluation.
  859.  
  860. (@t[eval-when] @i(list) @i(expression) ...) @i(syntax) to evaluate
  861. @i(expressions) when the current situation is in @i(list).  When this
  862. form is evaluated by the Scheme interpreter and @t[eval] is a member
  863. of the situation @i(list), then the expressions will be evaluated.
  864. When this form is evaluated by the Scheme compiler and @t[compile] is
  865. a member of the situation @i(list), then the expressions will be
  866. evaluated within the compiler.  When this form is evaluated by the
  867. Scheme compiler, and @t[load] is a member of the situation @i(list),
  868. then the compiler will compile the form (@t[begin] @i(expression) ...)).
  869.  
  870. (@t[even?] @i(integer)) @i(predicate) that returns @t(#t) if
  871. @i(integer) is even.  Revised@+(3) 20.
  872.  
  873. @i(exact) @ @ @i(integers) are exact, all other numbers are not.
  874. Revised@+(3) 18.
  875.  
  876. (@t[exact->inexact] @i(number)) returns the @i(inexact) representation
  877. of @i(number). Revised@+(3) 21.
  878.  
  879. (@t(exact?) @i(number)) @i(predicate) that returns @t(#t) if
  880. @i(number) is @i(exact).  Revised@+(3) 19.
  881.  
  882. (@t(exit)) returns from the current @t[read-eval-print] procedure.
  883.  
  884. (@t(exp) @i(number)) returns exponential function of @i(number).
  885. Revised@+(3) 20.
  886.  
  887. (@t(expand) @i(expression)) returns the value of @i(expression) after
  888. all macro expansions.  See @t[define-macro].
  889.  
  890. (@t(expand-once) @i(expression)) returns the value of @i(expression)
  891. after one macro expansion.  See @t[define-macro].
  892.  
  893. @i(expression) a Scheme construct that returns a value.  Revised@+(3) 6.
  894.  
  895. (@t[expt] @i[number]@-(1) @i[number]@-(2)) returns  @i[number]@-(1)
  896. raised to the power @i[number]@-(2).  Revised@+(3) 21.
  897.  
  898. @t(fix) @i(format descriptor).  Revised@+(3) 22.
  899.  
  900. @i(fixed) @t[Scheme->C] internal representation of an
  901. @i(integer).  The maximum @i(fixed) value is 536,870,911 and
  902. the minimum is -536,870,912.  It is represented in a 32-bit word
  903. with two bits used by the tag.
  904.  
  905. (@t[fixed->float] @i(fixed)) returns the @i(float) representation of
  906. @i(fixed).
  907.  
  908. (@t[fixed?] @i(expression)) @i(predicate) that returns @t[#t] when
  909. @i(expression) is a @i(fixed).
  910.  
  911. @t[float] @i(syntax) for declaring a non-Scheme procedure, procedure
  912. argument, or global variable as the C type @t[float]. When a
  913. @t[float] value must be supplied, an expression of type @i(number)
  914. must be supplied.  When a @t[float] value is returned, a value of
  915. type @i(number) is returned.
  916.  
  917. @i(float) @t[Scheme->C] internal floating point representation.  This is
  918. typically 64-bits.
  919.  
  920. (@t(float->fixed) @i(float)) returns the @i(fixed) @i(number)
  921. that best represents the value of @i(float).
  922.  
  923. (@t[float?] @i(expression)) @i(predicate) that returns @t[#t]
  924. if @i(expression) is a @i(float) value.
  925.  
  926. (@t[floor] @i[number]) returns the largest @i(integer) not larger than
  927. @i(number).  Revised@+(3) 20.
  928.  
  929. (@t[flush-buffer] @i(optional-output-port)) forces output of all
  930. characters buffered in @i(optional-output-port).
  931.  
  932. (@t[for-each] @i(procedure) @i(list) @i(list) ...) applies
  933. @i(procedure) to each element of the @i(lists) in order.
  934. Revised@+(3) 26.
  935.  
  936. (@t[force] @i(promise)) returns the forced value of a promise.
  937. Revised@+(3) 26.
  938.  
  939. @i(formals) a @i(symbol) or a @i(list) of @i(symbols) that are the
  940. arguments.  Revised@+(3) 7.
  941.  
  942. (@t(format) @t(#f) @i(format-template) @i(expression) ...) returns a
  943. string that is the result of outputting the @i(expressions)
  944. according to the @i(format-template).
  945.  
  946. (@t(format) @i(format-template) @i(expression) ...) returns a string
  947. that is the result of outputting the @i(expressions) according to
  948. the @i(format-template).
  949.  
  950. (@t(format) @i(output-port) @i(format-template) @i(expression) ...)
  951. output the @i(expressions) to @i(output-port) according to the
  952. @i(format-template).
  953.  
  954. (@t(format) @t[#t] @i(format-template) @i(expression) ...) output the
  955. @i(expressions) to the current output port according to the
  956. @i(format-template).
  957.  
  958. @i(format descriptor) a @i(list) that describes the type of output
  959. conversion to be done by @t[number->string].  The supported forms are
  960. (@t(int)), (@t(fix) @i(integer)), and (@t(sci) @i(integer)).
  961. Revised@+(3) 21.
  962.  
  963. @i(format-template) a @i(string) consisting of format descriptors and
  964. literal characters.  A format descriptor is @t[~] followed by some
  965. other character.  When one is encountered, it is interpreted.  Literal
  966. characters are output as is.  See @t[~a], @t[~A], @t[~c], @t[~C],
  967. @t[~s], @t[~S], @t[~%], @t[~~].
  968.  
  969. (@t[gcd] @i(number) ...) returns the greatest common divisor of its
  970. arguments.  Revised@+(3) 20.
  971.  
  972. (@t(get-output-string) @i(string-output-port)) returns the @i(string)
  973. associated with @i(string-output-port).  The @i(string) associated
  974. with the @i(string-output-port) is initially set to @t[""].
  975.  
  976. (@t(getprop) @i(symbol) @i(expression)) returns the value that has
  977. the key @t(eq?) to @i(expression) from @i(symbol's) property list.  If
  978. there is no value associated with @i(expression), then @t[#f] is
  979. returned.
  980.  
  981. (@t[implementation-information]) returns a list of string or
  982. @t(#f) values containing information about the Scheme
  983. implementation.  The list is of the form
  984. (@i(implementation-name) @i(version) @i(machine) @i(processor)
  985. @i(operating-system) @i(filesystem) @i(features) ...).
  986.  
  987. (@t[if] @i(expression)@-(1) @i(expression)@-(2)) @i(syntax) for a
  988. conditional expression.  Revised@+(3) 8.
  989.  
  990. (@t[if] @i(expression)@-(1) @i(expression)@-(2) @i(expression)@-(3))
  991. @i(syntax) for a conditional expression.  Revised@+(3) 8.
  992.  
  993. (@t[include] @i(string)) @i(syntax) to include the contents of the
  994. file @i(string) at this point in the Scheme compilation.
  995. Search directories may be specified by the @t[-I] command flag.
  996.  
  997. @i(inexact) @ @ @i(float) numbers are inexact.  Revised@+(3) 18.
  998.  
  999. (@t[inexact->exact] @i(number)) returns the @i(exact)
  1000. representation of @i(number).  Revised@+(3) 21.
  1001.  
  1002. (@t[inexact?] @i(number)) @i(predicate) that returns @t[#t] when
  1003. @i(number) is @i(inexact).  Revised@+(3) 19.
  1004.  
  1005. @i(input-port) Scheme object that can deliver characters on command.
  1006. Revised@+(3) 28.
  1007.  
  1008. (@t[input-port?] @i(expression)) @i(predicate) when returns @t[#t]
  1009. when @i(expression) is an @i(input-port).  Revised@+(3) 28.
  1010.  
  1011. @t[int] @i(syntax) for declaring a non-Scheme procedure, procedure
  1012. argument, or global variable as the C type @t[int].  When a @t[int]
  1013. value must be supplied, an expression of type @i(number) must be
  1014. supplied.  When a @t[int] value is returned, a value of type
  1015. @i(number) is returned.  The @t[Scheme->C] system uses this type
  1016. internally and requires that it be 32 bits long.
  1017.  
  1018. @t(int) @i(format descriptor).  Revised@+(3) 22.
  1019.  
  1020. @i(integer) integers are represented by @i(fixed) values.
  1021. Revised@+(3) 18.
  1022.  
  1023. (@t[integer->char] @i(integer)) returns the @i(character) whose ASCII
  1024. code is equal to @i(integer).  Revised@+(3) 24.
  1025.  
  1026. (@t[integer?] @i[expression]) @i(predicate) that returns @t[#t] when
  1027. @i(expression) is an @i(integer).  Revised@+(3) 19.
  1028.  
  1029. @i(interned) @ @ @i(symbols) that are contained in @t[*obarray*] are
  1030. interned.
  1031.  
  1032. (@t[lambda] @i(formals) @i(body)) the ultimate imperative, the
  1033. ultimate declarative.  Revised@+(3) 7.
  1034.  
  1035. (@t(last-pair) @i(list)) returns the last @i(pair) of @i(list).
  1036. Revised@+(3) 16.
  1037.  
  1038. (@t[lcm] @i(number) ...) returns the least common multiple of its
  1039. arguments.  Revised@+(3) 20.
  1040.  
  1041. (@t[length] @i(list)) returns the length of @i(list).  Revised@+(3)
  1042. 16.
  1043.  
  1044. (@t[let] @i(bindings) @i(body)) @i(syntax) for a binding construct
  1045. that computes initial values before any bindings are done.
  1046. Revised@+(3) 9.
  1047.  
  1048. (@t[let] @i(symbol) @i(bindings) @i(body)) @i(syntax) for a general
  1049. looping construct. Revised@+(3) 10.
  1050.  
  1051. (@t[let*] @i(bindings) @i(body)) @i(syntax) for a binding construct
  1052. that computes initial values and performs bindings sequentially.
  1053. Revised@+(3) 9.
  1054.  
  1055. (@t[letrec] @i(bindings) @i(body)) @i(syntax) for a binding construct
  1056. that binds the variables before the initial values are computed.
  1057. Revised@+(3) 9.
  1058.  
  1059. @i(letter) an alphabetic @i(character).  Revised@+(3) 24.
  1060.  
  1061. @i(list) the empty list, or a @i(pair) whose @t[cdr] is a @i(list).
  1062. Revised@+(3) 15.
  1063.  
  1064. (@t[list] @i(expression) ...) returns a @i(list) of its arguments.
  1065. Revised@+(3) 16.
  1066.  
  1067. (@t[list->string] @i(list)) returns the string formed from the
  1068. @i(characters) in @i(list).  Revised@+(3) 25.
  1069.  
  1070. (@t[list->vector] @i(list)) returns a @i(vector) whose elements are the
  1071. members of @i(list).  Revised@+(3) 26.
  1072.  
  1073. (@t[list-ref] @i[list] @i[integer]) returns the @i(integer) element
  1074. of @i(list).  Elements are numbered starting at 0.  Revised@+(3) 16.
  1075.  
  1076. (@t[list-tail] @i[list] @i[integer]) returns the sublist of @i(list)
  1077. obtained by omitting the first @i(integer) elements.  Revised@+(3) 16.
  1078.  
  1079. (@t[load] @i(string)) loads the expressions in the file @i(string)
  1080. into the Scheme interpreter.  The results of the expressions are
  1081. printed on the current output port.  Revised@+(3) 30.
  1082.  
  1083. (@t[loade] @i(string)) loads the expressions in the file
  1084. @i(string) into the Scheme interpreter.  The contents of the
  1085. file and the results of the expressions are printed on the
  1086. current output port.  Revised@+(3) 30.
  1087.  
  1088. (@t[loadq] @i(string)) loads the expressions in the file @i(string)
  1089. into the Scheme interpreter.  The results of the expressions are not
  1090. printed.  Revised@+(3) 30.
  1091.  
  1092. (@t[log] @i[number]) returns the natural logarithm of @i[number].
  1093. Revised@+(3) 20.
  1094.  
  1095. @t[longint] @i(syntax) for declaring a non-Scheme procedure,
  1096. procedure argument, or global variable as the C type @t[long int].
  1097. When a @t[long int] value must be supplied, an expression of type
  1098. @i(number) must be supplied.  When a @t[long int] value is returned,
  1099. a value of type @i(number) is returned.
  1100.  
  1101. @t[longunsigned] @i(syntax) for declaring a non-Scheme procedure,
  1102. procedure argument, or global variable as the C type @t[long
  1103. unsigned]. When a @t[long unsigned] value must be supplied, an
  1104. expression of type @i(number) must be supplied.  When a @t[long
  1105. unsigned] value is returned, a value of type @i(number) is returned.
  1106.  
  1107. (@t[make-string] @i(integer)) returns a string of length @i(integer)
  1108. with unknown elements.  Revised@+(3) 24.
  1109.  
  1110. (@t[make-string] @i(integer) @i(char)) returns a string of length
  1111. @i(integer) with all elements initialized to @i(char).  Revised@+(3)
  1112. 24.
  1113.  
  1114. (@t[make-vector] @i(integer)) returns a vector of length @i(integer)
  1115. with unknown elements.  Revised@+(3) 25.
  1116.  
  1117. (@t[make-vector] @i(integer) @i(expression)) returns a vector of
  1118. length @i(integer) with all elements set to @i(expression).
  1119. Revised@+(3) 25.
  1120.  
  1121. (@t[map] @i(procedure) @i(list) @i(list) ...) returns a @i(list)
  1122. constructed by applying @i(procedure) to each element of the
  1123. @i(lists).  The order of application is not defined.  Revised@+(3)
  1124. 26.
  1125.  
  1126. (@t[max] @i(number) @i(number) ...) returns the maximum of its
  1127. arguments.  Revised@+(3) 19.
  1128.  
  1129. (@t[member] @i(expression) @i(list)) returns the first @i(sublist) of
  1130. @i(list) such that (@t[equal?] @i(expression) (@t[car] @i(sublist)))
  1131. is true. If no match occurs, then @t[#f] is returned.  Revised@+(3)
  1132. 16.
  1133.  
  1134. (@t[memq] @i(expression) @i(list)) returns the first @i(sublist) of
  1135. @i(list) such that (@t[eq?] @i(expression) (@t[car] @i(sublist))) is
  1136. true. If no match occurs, then @t[#f] is returned.  Revised@+(3) 16.
  1137.  
  1138. (@t[memv] @i(expression) @i(list)) returns the first @i(sublist) of
  1139. @i(list) such that (@t[eqv?] @i(expression) (@t[car] @i(sublist))) is
  1140. true. If no match occurs, then @t[#f] is returned.  Revised@+(3) 16.
  1141.  
  1142. (@t[min] @i(number) @i(number) ...) returns the minimum of its
  1143. arguments.  Revised@+(3) 19.
  1144.  
  1145. (@t[module] @i(symbol) @i(clause) ...) @i(syntax) to declare module
  1146. information for the @t[Scheme->C] compiler.  The @i(module) form must
  1147. be the first item in the source file.  The module name is a
  1148. @i(symbol) that must be a legal C identifier.  Using this
  1149. information, the compiler is able to construct an object module that
  1150. is similar in structure to a Modula 2 module. Following the module
  1151. name come optional @i(clauses). If the module is to provide the
  1152. "main" program, then a @i(clause) of the form (@t[main] @i(symbol))
  1153. is provided that indicates that @i(symbol) is the initial
  1154. @i(procedure).  It will be invoked with one argument that is a
  1155. @i(list) of @i(strings) that are the arguments that the program was
  1156. invoked with.  A minimum (and default) heap size can be specified by
  1157. the @i(clause) (@t[HEAP] @i(integer)), where the size is specified in
  1158. megabytes.  The user may control that top-level @i(symbols) in this
  1159. module are visible as top-level @i(symbols) by including a @i(clause)
  1160. of the form (@t[top-level] @i(symbol) ...). If this clause occurs,
  1161. then only those @i(symbols) specified will be made top-level. All
  1162. other top-level @i(symbols) in the module will appear at the
  1163. top-level with names of the form: @i(module)_@i(symbol).  If a
  1164. @t[top-level] clause is not provided, then all top-level @i(symbols)
  1165. in the module will be made top-level. The final clause, (@t[with]
  1166. @i(symbol) ...) indicates that this module will be linked with other
  1167. modules.  Normally the intermodule linkages are automatically infered
  1168. by including all @i(modules) that have external references. However,
  1169. this mechanism is not sufficient to pick up those objects that are
  1170. only referenced at runtime.
  1171.  
  1172. (@t(modulo) @i(integer)@-(1) @i(integer)@-(2)) returns the modulo of its
  1173. arguments.  The sign of the result is the sign of the divisor.
  1174. Revised@+(3) 20.
  1175.  
  1176. (@t(my-rusage)) returns a @i(vector) containing information about
  1177. resources consumed by the program.  The information is that contained
  1178. in the @i(rusage) structure.  See @i(Ultrix-32 Programmer's Manual),
  1179. 2-62. 
  1180.  
  1181. (@t[negative?] @i(number)) @i(predicate) that returns @t[#t] when
  1182. @i(number) is negative.  Revised@+(3) 19.
  1183.  
  1184. (@t[newline] @i(optional-output-port)) outputs a newline character on
  1185. the @i(optional-output-port).  Revised@+(3) 29.
  1186.  
  1187. (@t[not] @i(expression)) @i(predicate) that returns @t[#t] when
  1188. @i(expression) is @t[#f] or @t[()].  Revised@+(3) 12.
  1189.  
  1190. (@t[null?] @i(expression)) @i(predicate) that returns @t[#t] when
  1191. @i(expression) is @t[()].  Revised@+(3) 16.
  1192.  
  1193. @i(number) @t[Scheme->C] has two internal representations for numbers:
  1194. @i(fixed) and @i(float).  When an arithmetic operation is to
  1195. be performed with a @i(float) argument, all arguments will be
  1196. converted to @i(float) as needed, and then the operation will be
  1197. performed.  Automatic conversion back to @i(fixed) is never done.
  1198. Revised@+(3) 17. 
  1199.  
  1200. (@t[number->string] @i(number) @i(format descriptor)) returns a
  1201. @i(string) that is the printed representation of @i(number) as
  1202. specified by @i(format descriptor).  Revised@+(3) 21.
  1203.  
  1204. (@t[number->string] @i(number)) returns a string with the printed
  1205. representation of the number.
  1206.  
  1207. (@t[number->string] @i(number) @i(radix)) returns a string with the
  1208. printed representation of the number in the given radix.  Radix must
  1209. be 2, 8, 10, or 16.
  1210.  
  1211. (@t[number?] @i(expression)) @i(predicate) that returns @t[#t] when
  1212. @i(expression) is a @i(number).  Revised@+(3) 19.
  1213.  
  1214. (@t[odd?] @i(integer)) @i(predicate) that returns @t[#t] when
  1215. @i(integer) is odd.  Revised@+(3) 19.
  1216.  
  1217. (@t[open-file] @i(string)@-(1) @i(string)@-(2)) returns a @i(port)
  1218. for file @i(string)@-(1) that is opened using the Ultrix-32
  1219. @i(fopen) option  @i(string)@-(2).  See @i(Ultrix-32 Programmer's
  1220. Manual), 3-189.
  1221.  
  1222. (@t[open-input-file] @i(string)) returns an @i(input port) capable of
  1223. delivering characters from the file @i(string).  Revised@+(3) 28.
  1224.  
  1225. (@t[open-input-string] @i(string))  returns an @i(input port) capable
  1226. of delivering characters from the @i(string).
  1227.  
  1228. (@t[open-output-file] @i(string)) returns an @i(output port) capable
  1229. of delivering characters to the file @i(string).  Revised@+(3) 28.
  1230.  
  1231. (@t[open-output-string]) returns an @i(output port) capable of
  1232. delivering characters to a @i(string).  See @t[get-output-string].
  1233.  
  1234. @i(optional-input-port) if present, it must be an @i(input-port).  If
  1235. not present, then it is the value returned by @t(current-input-port).
  1236.  
  1237. @i(optional-output-port) if present, it must be an @i(output-port).  If
  1238. not present, then it is the value returned by @t(current-output-port).
  1239.  
  1240. (@t[or] @i(expression) ...) @i(syntax) for a conditional expression.
  1241. Revised@+(3) 9.
  1242.  
  1243. @i(pair) record structure with two fields: car and cdr.  Revised@+(3)
  1244. 14.
  1245.  
  1246. (@t[pair?] @i(expression)) @i(predicate) that returns @t[#t] when
  1247. @i(expression) is a @i(pair).  Revised@+(3) 15.
  1248.  
  1249. (@t[peek-char] @i(optional-input-port)) returns a copy of the next
  1250. character available on  @i(optional-input-port).
  1251.  
  1252. @t[pointer] @i(syntax) for declaring a non-Scheme procedure,
  1253. procedure argument, or global varible as being some type of C
  1254. pointer.  When a value must be supplied, an expression of the type
  1255. @i(string), @i(procedure), or @i(number) is supplied.  This will
  1256. result in either the address of the first character of the
  1257. @i(string), the address of the code associated with the
  1258. @i(procedure), or the value of the number being used.  A @i(pointer)
  1259. value is returned as an non-negative @i(number).
  1260.  
  1261. @i(port) Scheme object that is capable of delivering or accepting
  1262. characters on demand.  Revised@+(3) 28.
  1263.  
  1264. (@t[port->stdio-file] @i(port)) returns the standard I/O FILE
  1265. pointer for @i(port), or @t[#f] if the @i(port) does not use
  1266. standard I/O.
  1267.  
  1268. (@t[positive?] @i(number)) @i(predicate) that returns @t[#t] when
  1269. @i(number) is positive.  Revised@+(3) 19.
  1270.  
  1271. (@t[pp] @i(expression) @i(optional-output-port)) pretty-prints
  1272. @i(expression) on @i(optional-output-port).
  1273.  
  1274. (@t[pp] @i(expression) @i[string]) pretty-prints @i(expression) to
  1275. the file @i(string).
  1276.  
  1277. @i(predicate) function that returns @t(#t) when the condition
  1278. is true, and @t(#f) when the condition is false.  Revised@+(3) 13.
  1279.  
  1280. (@t[procedure?] @i(expression)) @i(predicate) that returns @t[#t]
  1281. when @i(expression) is a @i(procedure).  Revised@+(3) 26.
  1282.  
  1283. (@t[proceed]) return from the innermost @t(read-eval-print) loop with
  1284. an unspecified value.
  1285.  
  1286. (@t[proceed] @i(expression))  return from the innermost
  1287. @t(read-eval-print) loop with @i(expression) as the value.  At the
  1288. outermost level, @i(expression) must be an @i(integer) as it will be
  1289. used as the argument for a call to the @i(ULTRIX-32) procedure
  1290. @i(exit).
  1291.  
  1292. (@t[putprop] @i(symbol) @i(expression)@-(1) @i(expression)@-(2))
  1293. stores @i(expression)@-(2) using key @i(expression)@-(1) on
  1294. @i(symbol's) property list.  See @t[getprop].
  1295.  
  1296. (@t[quasiquote] @i(back-quote-template)) @i(syntax) for a @i(vector)
  1297. or @i(list) constructor.  Revised@+(3) 11.
  1298.  
  1299. (@t[quote] @i(expression)) @i(syntax) whose result is @i(expression).
  1300. Revised@+(3) 7.
  1301.  
  1302. (@t[quotient] @i(integer)@-(1) @i(integer)@-(2)) returns the quotient
  1303. of its arguments.  The sign is the sign of the product of its
  1304. arguments. Revised@+(3) 20.
  1305.  
  1306. (@t[rational?] @i(number)) predicate that returns @t[#t] when its
  1307. argument is a rational @i(number).  This is true when @i(number) is
  1308. an @i(fixed) value.  Revised@+(3) 19.
  1309.  
  1310. (@t[read] @i(optional-input-port)) returns the next readable object
  1311. from @i(optional-input-port).  Revived@+(3) 29.
  1312.  
  1313. (@t[read-char] @i(optional-input-port)) returns the next character
  1314. from @i(optional-input-port), updating the @i(port) to point to the
  1315. next @i(character).  Revived@+(3) 29.
  1316.  
  1317. (@t[read-eval-print] @i(expression) ...) starts  a new
  1318. read-eval-print loop.  The optional @i(expressions) allow one to
  1319. specify the prompt or the header:  @t[PROMPT] @i(string) @t[HEADER]
  1320. @i(string).  Typing control-D at the prompt will terminate the
  1321. procedure.  See @t[reset], @t[exit], @t[eval], @t[proceed].
  1322.  
  1323. (@t[real?] @i(number)) predicate that returns @t[#t] when its
  1324. argument is a real @i(number).  This is true in @t[Scheme->C] for any
  1325. @i(number). Revised@+(3) 19.
  1326.  
  1327. (@t[remainder] @i(integer)@-(1) @i(integer)@-(2)) returns the
  1328. remainder of its arguments.  The sign is the sign of
  1329. @i(integer)@-(1). Revised@+(3) 20.
  1330.  
  1331. (@t[remove] @i(expression) @i(list)) returns a new @i(list) that is a
  1332. copy of @i(list) with all items @t[equal?] to @i(expression) removed
  1333. from it.
  1334.  
  1335. (@t[remove!] @i(expression) @i(list)) returns @i(list) having deleted
  1336. all items @t[equal?] to @i(expression) from it.
  1337.  
  1338. (@t[remq] @i(expression) @i(list)) returns a new @i(list) that is a
  1339. copy of @i(list) with all items @t[eq?] to @i(expression) removed
  1340. from it.
  1341.  
  1342. (@t[remq!] @i(expression) @i(list)) returns @i(list) having deleted
  1343. all items @t[eq?] to @i(expression) from it.
  1344.  
  1345. (@t[remv] @i(expression) @i(list)) returns a new @i(list) that is a
  1346. copy of @i(list) with all items @t[eqv?] to @i(expression) removed
  1347. from it.
  1348.  
  1349. (@t[remv!] @i(expression) @i(list)) returns @i(list) having deleted
  1350. all items @t[eqv?] to @i(expression) from it.
  1351.  
  1352. (@t[reset]) returns to the current @t[read-eval-print] loop.
  1353.  
  1354. (@t[reverse] @i(list)) returns a new @i(list) with the elements of
  1355. @i(list) in reverse order.  Revised@+(3) 16.
  1356.  
  1357. (@t[round] @i(number)) returns @i(number) rounded to the closest
  1358. integer.  Revised@+(3) 20.
  1359.  
  1360. (@t(save-heap) @i(string) . @i(procedure)) saves a copy a Scheme
  1361. program's heap in the file named @i(string).  When the heap is
  1362. reloaded into a newly created process, execution will start at
  1363. @i(procedure) that will be called with a list of the command line
  1364. arguments.  If @i(procedure) is not supplied, then execution will
  1365. begin at the normal startup procedure.  Note that heap image files
  1366. may only be used by processes that are running the same code that
  1367. was being run by the process that wrote the heap image file.
  1368. N.B. Items such as ports are not automatically reinitialized.
  1369.  
  1370. @i(sc-pointer) a Scheme object that is represented by a tagged
  1371. pointer to one or more words of memory.
  1372.  
  1373. @t(sc...) all modules that compose the @t[Scheme->C] runtime system
  1374. have module names begining with the letters @t(sc).  All procedures
  1375. and external variables in these modules have names that begin with
  1376. @t(sc..._).
  1377.  
  1378. @t[scc] shell command to invoke the @t[Scheme->C] Scheme compiler.  See the
  1379. @t[man] page.
  1380.  
  1381. @t[SCGCINFO] environment variable that when set to 1 will log
  1382. garbage collection information on stderr.  
  1383.  
  1384. @t[SCHEAP] environment variable that controls the heap size.  It is
  1385. set to the desired size in megabytes.  If not set, then the default
  1386. in the main program will be used.  If a default size is not supplied,
  1387. then a 4mb heap is used.
  1388.  
  1389. @t[SCHEAPFILE] environment variable that controls initialization of
  1390. the heap from a saved heap image.  If it is set to the name of a
  1391. file, then the initial heap for the program will be loaded from that
  1392. file.
  1393.  
  1394. @t[SCLIMIT] environment variable that controls the amount of heap
  1395. retained after a generational garbage collection that will force a
  1396. full collection.  It is expressed as a percent of the heap.  The
  1397. default value is 33.
  1398.  
  1399. (@t(scheme-byte-ref) @i(sc-pointer) @i(integer)) returns the byte at
  1400. the @i(integer) byte of @i(sc-pointer) as a @i(number).
  1401.  
  1402. (@t(scheme-byte-set!) @i(sc-pointer) @i(integer) @i(number)) sets the
  1403. byte at the @i(integer) byte of @i(sc-pointer) to @i(number).  The
  1404. procedure returns @i(number) as its value.
  1405.  
  1406. (@t(scheme-int-ref) @i(sc-pointer) @i(integer)) return the int at the
  1407. @i(integer) byte of @i(sc-pointer) as a @i(number).
  1408.  
  1409. (@t(scheme-int-set!) @i(sc-pointer) @i(integer) @i(number)) sets the
  1410. int at the @i(integer) byte of @i(sc-pointer) to @i(number).  The
  1411. procedure returns @i(number) as its value.
  1412.  
  1413. (@t(scheme-tscp-ref) @i(sc-pointer) @i(integer)) returns the tscp at
  1414. the @i(integer) byte of @i(sc-pointer).
  1415.  
  1416. (@t(scheme-tscp-set!) @i(sc-pointer) @i(integer) @i(expression)) sets
  1417. the tscp at the @i(integer) byte of @i(sc-pointer) to @i(expression).
  1418. The procedure returns @i(expression) as its value.
  1419.  
  1420. @t(sci) shell command to invoke the @t[Scheme->C] Scheme interpreter.  See the
  1421. @t[man] page.
  1422.  
  1423. @t(sci) @i(format descriptor).  Revised@+(3) 22.
  1424.  
  1425. (@t[set!] @i(symbol) @i(expression)) @i(syntax) to set the location
  1426. bound to @i(symbol) to the value of @i(expression).  Revised@+(3) 8.
  1427.  
  1428. (@t[set-car!] @i(pair) @i(expression)) sets the car field of
  1429. @i(pair) to @i(expression).  Revised@+(3) 15.
  1430.  
  1431. (@t[set-cdr!] @i(pair) @i(expression)) sets the cdr field of
  1432. @i(pair) to @i(expression).  Revised@+(3) 15.
  1433.  
  1434. (@t[set-top-level-value!] @i(symbol) @i(expression)) sets the
  1435. top-level location bound to @i(symbol) to value.
  1436.  
  1437. (@t[set-write-width!] @i(integer) @i(optional-output-port)) sets the
  1438. width of @i(optional-output-port) to @i(integer).
  1439.  
  1440. @t[shortint] @i(syntax) for declaring a non-Scheme procedure,
  1441. procedure argument, or global variable as the C type @t[short int].
  1442. When a @t[short int] value must be supplied, an expression of type
  1443. @i(number) must be supplied.  When a @t[short int] value is returned,
  1444. a value of type @i(number) is returned.
  1445.  
  1446. @t[shortunsigned] @i(syntax) for declaring a non-Scheme procedure,
  1447. procedure argument, or global variable as the C type @t[short
  1448. unsigned]. When a @t[short unsigned] value must be supplied, an
  1449. expression of type @i(number) must be supplied.  When a @t[short
  1450. unsigned] value is returned, a value of type @i(number) is returned.
  1451.  
  1452. (@t(sin) @i(number)) returns the sine of its argument.  Revised@+(3)
  1453. 20.
  1454.  
  1455. (@t[signal] @i(number) @i(expression)) provides a signal handler for
  1456. the @i(ULTRIX-32) signal @i(number).  The @i(expression) is the
  1457. signal handler and is either a @i(procedure) or a @i(number).  When a
  1458. procedure is supplied, it is called with the signal number when the
  1459. signal is present.  Numeric handler values are interpreted by the
  1460. underlying operating system.  The previous value of the signal
  1461. handler is returned.
  1462.  
  1463. (@t(sqrt) @i(number)) returns the square root of its argument.
  1464. Revised@+(3) 20.  
  1465.  
  1466. @t[stderr-port] @i(port) to output characters to stderr.
  1467.  
  1468. @t[stdin-port] @i(port) to input characters from stdin.
  1469.  
  1470. @t[stdout-port] @i(port) to output characters to stdout.
  1471.  
  1472. @i(string) sequence of @i(characters).  Revised@+(3) 24.
  1473.  
  1474. (@t[string->list] @i(string)) returns a newly constructed @i(list)
  1475. that contains the elements of @i(string).  Revised@+(3) 25.
  1476.  
  1477. (@t[string->number] @i(string)) returns a number expressed by
  1478. @i(string).  If @i(string) is not a syntactically valid notation for
  1479. a number then it returns @t(#f).
  1480.  
  1481. (@t[string->number] @i(string) @i(number)) returns a number expressed
  1482. by @i(string) with @i(number) the default radix.  Radix must be 2, 8,
  1483. 10, or 16. If @i(string) is not a syntactically valid notation for a
  1484. number then it returns @t(#f).
  1485.  
  1486. (@t[string->symbol] @i(string)) returns the interned @i(symbol) whose
  1487. name is @i(string).  Revised@+(3) 17.
  1488.  
  1489. (@t[string->uninterned-symbol] @i(string)) returns an uninterned
  1490. @i(symbol) whose name is string.
  1491.  
  1492. (@t[string-append] @i(string) @i(string) ...) returns a new @i(string)
  1493. whose @i(characters) are the concatenation of the of the given @i(strings).
  1494. Upper and lower case letters are treated as though they were the same
  1495. character.
  1496. Revised@+(3) 25.
  1497.  
  1498. (@t[string-ci<=?] @i(string)@-(1) @i(string)@-(2)) @i(predicate)
  1499. that returns @t[#t] when @i(string)@-(1) is less than or equal to
  1500. @i(string)@-(2).  Upper and lower case letters are treated as though
  1501. they were the same character. Revised@+(3) 25.
  1502.  
  1503. (@t[string-ci<?] @i(string)@-(1) @i(string)@-(2)) @i(predicate) that
  1504. returns @t[#t] when @i(string)@-(1) is less than @i(string)@-(2).
  1505. Upper and lower case letters are treated as though they were the same
  1506. character. Revised@+(3) 25.
  1507.  
  1508. (@t[string-ci=?] @i(string)@-(1) @i(string)@-(2)) @i(predicate) that
  1509. returns @t[#t] when @i(string)@-(1) is equal to @i(string)@-(2).
  1510. Upper and lower case letters are treated as though they were the same
  1511. character. Revised@+(3) 25.
  1512.  
  1513. (@t[string-ci>=?] @i(string)@-(1) @i(string)@-(2)) @i(predicate)
  1514. that returns @t[#t] when @i(string)@-(1) is greater than or equal to
  1515. @i(string)@-(2).  Upper and lower case letters are treated as though
  1516. they were the same character. Revised@+(3) 25.
  1517.  
  1518. (@t[string-ci>?] @i(string)@-(1) @i(string)@-(2)) @i(predicate) that
  1519. returns @t[#t] when @i(string)@-(1) is greater than @i(string)@-(2).
  1520. Upper and lower case letters are treated as though they were the same
  1521. character. Revised@+(3) 25.
  1522.  
  1523. (@t[string-copy] @i(string)) returns a new @i(string) whose
  1524. @i(characters) are those of the given @i(string).  Revised@+(3) 25.
  1525.  
  1526. (@t[string-fill!] @i(string) @i(char)) stores @i(char) in
  1527. every element of @i(string).  Revised@+(3) 25.
  1528.  
  1529. (@t[string-length] @i(string)) returns the length of @i(string).
  1530. Revised@+(3) 24.
  1531.  
  1532. (@t[string-ref] @i(string) @i(integer)) returns @i(character) that
  1533. is the @i(integer) element of @i(string).  The first element is
  1534. 0. Revised@+(3) 24.
  1535.  
  1536. (@t[string-set!] @i(string) @i(integer) @i(character)) sets the
  1537. @i(integer) element of @i(string) to @i(character).  The first
  1538. element is 0.  Revised@+(3) 24.
  1539.  
  1540. (@t[string<=?] @i(string)@-(1) @i(string)@-(2)) @i(predicate) that
  1541. returns @t[#t] when @i(string)@-(1) is less than or equal to
  1542. @i(string)@-(2).  Revised@+(3) 25.
  1543.  
  1544. (@t[string<?] @i(string)@-(1) @i(string)@-(2)) @i(predicate) that
  1545. returns @t[#t] when @i(string)@-(1) is less than @i(string)@-(2).
  1546. Revised@+(3) 25.
  1547.  
  1548. (@t[string=?] @i(string)@-(1) @i(string)@-(2)) @i(predicate) that
  1549. returns @t[#t] when @i(string)@-(1) is equal to @i(string)@-(2).
  1550. Revised@+(3) 25.
  1551.  
  1552. (@t[string>=?] @i(string)@-(1) @i(string)@-(2)) @i(predicate) that
  1553. returns @t[#t] when @i(string)@-(1) is greater than or equal to
  1554. @i(string)@-(2).  Revised@+(3) 25.
  1555.  
  1556. (@t[string>?] @i(string)@-(1) @i(string)@-(2)) @i(predicate) that
  1557. returns @t[#t] when @i(string)@-(1) is greater than @i(string)@-(2).
  1558. Revised@+(3) 25.
  1559.  
  1560. (@t[string?] @i(expression)) @i(predicate) that returns @t[#t] when
  1561. @i(expression) is a @i(string).  Revised@+(3) 24.
  1562.  
  1563. (@t[substring] @i(string) @i(integer)@-(1) @i(integer)@-(2)) returns
  1564. a @i(string) consisting of @i(integer)@-(2)-@i(integer)@-(1) elements
  1565. of @i(string) starting at element @i(integer)@-(1).  Revised@+(3) 25.
  1566.  
  1567. (@t[symbol->string] @i(symbol)) returns the name of @i(symbol) as a
  1568. @i(string).  Revised@+(3) 17.
  1569.  
  1570. (@t[symbol?] @i(expression)) @i(predicate) that returns @t[#t] when
  1571. @i(expression) is a @i(symbol).  Revised@+(3) 17.
  1572.  
  1573. @i(syntax) indicates a form that is evaluated in a manner that is
  1574. specific to the form.  Revised@+(3) 1.
  1575.  
  1576. (@t(tan) @i(number)) returns the tangent of its argument.
  1577. Revised@+(3) 20.
  1578.  
  1579. (@t[top-level]) returns control to the "top-level" @t[read-eval-print]
  1580. loop.
  1581.  
  1582. (@t[top-level-value] @i(symbol)) returns the value in the location
  1583. that is the "top-level" binding of @i(symbol).
  1584.  
  1585. (@t[trace]) returns a list of the procedures being traced.
  1586.  
  1587. (@t[trace] @i(symbol) @i(symbol) ...) enables tracing on the
  1588. @i(procedures) that are the values of the @i(symbols).
  1589.  
  1590. (@t[transcript-off]) turns off the transcript.  Revised@+(3) 30.
  1591.  
  1592. (@t[transcript-on] @i(string)) starts a transcript on the file
  1593. @i(string).  Revised@+(3) 30.
  1594.  
  1595. (@t[truncate] @i(number)) returns the truncated value of @i(number).
  1596. Revised@+(3) 20.
  1597.  
  1598. @t[tscp] @i(syntax) for declaring a non-Scheme procedure, procedure
  1599. argument, or global variable as the C type @t[TSCP]. The type
  1600. @t[TSCP] is a tagged pointer to a Scheme object. When a @t[tscp]
  1601. value must be supplied, any expression may be supplied.  When a
  1602. @t[tscp] value is returned, any type of value may be returned.
  1603.  
  1604. (@t[unbpt]) @i(syntax) to remove all breakpoints.
  1605.  
  1606. (@t[unbpt] @i(symbol) @i(symbol) ...) @i(syntax) to remove
  1607. breakpoints from the named @i(procedures).
  1608.  
  1609. (@t[uninterned-symbol?] @i[symbol]) @i(predicate) that returns
  1610. @t[#t] if @i[symbol] is not @i[interned].
  1611.  
  1612. (@t[unless] @i(expression)@-(1) @i(expression)@-(2) ...) @i(syntax)
  1613. for a conditional form that is equivalent to (@t[if] (@t[not]
  1614. @i(expression)@-(1)) (@t[begin] @i(expression)@-(2) ...)).
  1615.  
  1616. (@t[unquote] @i[expression]) @i(syntax) to evaluate the expression
  1617. and replaces it in the @i(back-quote-template).  Revised@+(3) 11.
  1618.  
  1619. (@t[unquote-splicing] @i[expression]) @i(syntax) to evaluate the
  1620. expression and splices it into the @i(back-quote-template).
  1621. Revised@+(3) 11.
  1622.  
  1623. @t[unsigned] @i(syntax) for declaring a non-Scheme procedure,
  1624. procedure argument, or global variable as the C type @t[unsigned].
  1625. When a @t[unsigned] value must be supplied, an expression of type
  1626. @i(number) must be supplied.  When a @t[unsigned] value is returned,
  1627. a value of type @i(number) is returned.
  1628.  
  1629. (@t[untrace]) @i(syntax) to remove tracing from all @i(procedures).
  1630.  
  1631. (@t[untrace] @i(symbol) @i(symbol) ...) @i(syntax) to remove tracing from the
  1632. named @i(procedures).
  1633.  
  1634. @i(vector) a heterogenous mutable structure whose elements are
  1635. indexed by @i(integers).  Revised@+(3) 25.
  1636.  
  1637. (@t[vector] @i[expression] ...) returns a newly allocated
  1638. @i(vector) whose elements contain the given arguments.
  1639. Revised@+(3) 25.
  1640.  
  1641. (@t[vector-fill!] @i(vector) @i(expression)) stores @i(expression) in
  1642. every element of @i(vector).  Revised@+(3) 26.
  1643.  
  1644. (@t[vector->list] @i(vector)) returns a newly created @i(list) of the
  1645. objects contained in the elements of the @i(vector).  Revised@+(3) 26.
  1646.  
  1647. (@t(vector-length) @i(vector)) returns the number of elements in
  1648. @i(vector).  Revised@+(3) 25.
  1649.  
  1650. (@t(vector-ref) @i(vector) @i(integer)) returns the contents of
  1651. element @i(integer) of @i(vector).  The first element is 0.
  1652. Revised@+(3) 25.
  1653.  
  1654. (@t(vector-set!) @i(vector) @i(integer) @i(expression)) sets element
  1655. @i(integer) of @i(vector) to @i(expression).  The first element is 0.
  1656. Revised@+(3) 25.
  1657.  
  1658. (@t[vector?] @i(expression)) @i(predicate) that returns @t[#t] when
  1659. @i(expression) is a @i(vector).  Revised@+(3) 25.
  1660.  
  1661. @t[void] @i(syntax) for declaring a non-Scheme procedure as returning
  1662. the C type @t[void].  The value of such a procedure may not be used.
  1663.  
  1664. (@t[when] @i(expression)@-(1) @i(expression)@-(2) ...) @i(syntax) for
  1665. a conditional form that is equivalent to (@t[if] @i(expression)@-(1)
  1666. (@t[begin] @i(expression)@-(2) ...)).
  1667.  
  1668. (@t[when-unreferenced] @i(expression) @i(procedure)) applys
  1669. the clean-up procedure @i(procedure) (with the object
  1670. represented by @i(expression) as its argument) at some point in
  1671. the future when the object represented by @i(expression) is no
  1672. longer referenced by the program.  The procedure returns
  1673. either the cleanup procedure supplied by an earlier call to
  1674. @t[when-unreferenced], or @t(#f) when no cleanup procedure was
  1675. defined.
  1676.  
  1677. (@t[when-unreferenced] @i(expression) @t[#f]) returns either the
  1678. cleanup procedure for the object represented by
  1679. @i(expression) or @t(#f) when no cleanup procedure was
  1680. defined.  In either case, the Scheme system will take no
  1681. action when the object represented by @i(expression) is no
  1682. longer referenced by the program.
  1683.  
  1684. (@t[with-input-from-file] @i[string] @i[procedure]) opens the file
  1685. @i(string), makes its @i(port) the default @i(input-port), then
  1686. calls @i(procedure) with no arguments.  Revised@+(3) 28.
  1687.  
  1688. (@t[with-output-to-file]  @i[string] @i[procedure]) opens the file
  1689. @i(string), makes its @i(port) the default @i(output-port), then
  1690. calls @i(procedure) with no arguments.  Revised@+(3) 28.
  1691.  
  1692. (@t[write] @i(expression) @i(optional-output-port)) outputs
  1693. @i(expression) to @i(optional-output-port) in a machine-readable
  1694. form.  Revised@+(3) 29.
  1695.  
  1696. (@t[write-char] @i(character) @i(optional-output-port)) outputs
  1697. @i(character) to @i(optional-output-port).  Revised@+(3) 29.
  1698.  
  1699. (@t[write-count] @i(optional-output-port)) returns the number of
  1700. characters on the current line in @i(optional-output-port).
  1701.  
  1702. (@t[write-width] @i(optional-output-port)) returns the width of
  1703. @i(optional-output-port) in @i(characters).
  1704.  
  1705. (@t(zero?) @i(number)) predicate that returns @t(#t) when @i(number)
  1706. is zero.  Revised@+(3) 19.
  1707.  
  1708. @t(~%) @i(format descriptor) to output a newline character.
  1709.  
  1710. @t(~~) @i(format descriptor) to output a @t[~].
  1711.  
  1712. @t(~A) @i(format descriptor) to output the next @i(expression) using
  1713. @t(display).
  1714.  
  1715. @t(~a) @i(format descriptor) identical to @t[~A].
  1716.  
  1717. @t(~C) @i(format descriptor) to output the next @i(expression) (that
  1718. must be a @i(character)) using @t(write-char).
  1719.  
  1720. @t(~c) @i(format descriptor) identical to @t[~C].
  1721.  
  1722. @t(~S) @i(format descriptor) to output the next @i(expression) using
  1723. @t(write).
  1724.  
  1725. @t(~s) @i(format descriptor) identical to @t[~S].
  1726.  
  1727. @End(Index)
  1728.